/*
 * 版权声明 (c) 2025 XXX科技有限公司
 *
 * 本软件及其相关文档文件受版权保护。未经版权所有者明确书面许可，任何单位或个人不得
 * 以任何形式复制、传播、修改、出售、出租、反向工程、反编译或利用本软件的任何部分。
 *
 * 对于任何违反本声明的行为，版权所有者保留追究法律责任的权利。
 */

#ifndef __MOCK_H__
#define __MOCK_H__
#include <string>
#include <iostream>
#include "context.h"

#if defined(__APPLE__)
#define SERVER1 "192.168.1.9" // 模拟主机1
// #define SERVER1 "192.168.1.11" // 模拟主机1
#define SERVER2 "192.168.1.12" // 模拟主机2
#define SERVER3 "192.168.1.13" // 模拟主机3

#else
#define SERVER1 "172.16.1.11" // 模拟主机1
#define SERVER2 "172.16.1.12" // 模拟主机2
#define SERVER3 "172.16.1.13" // 模拟主机3
#endif

namespace biz {
	inline void mock(shared_ptr<Context> ctx, string &currentIP) {
		if (currentIP == SERVER1) {
			auto mt01 = ServiceInfo{"HelloWorld", SERVER1, 10080, 11, 1};
			// auto mt02 = ServiceInfo{"Service001",  SERVER1,  10081,  12,  1};
			// auto mt03 = ServiceInfo{"Service002",  SERVER1,  10082,  13,  1};
			// auto mt04 = ServiceInfo{"Service003",  SERVER1,  10083,  13,  1};
			ctx->SetLocalService(mt01.Name, mt01);
			// ctx->SetLocalService(mt02.Name, mt02);
			// ctx->SetLocalService(mt03.Name, mt03);
			// ctx->SetLocalService(mt04.Name, mt04);
		}

		if (currentIP == SERVER2) {
			auto mt01 = ServiceInfo{"HelloWorld", SERVER2, 10080, 21, 1};
			auto mt02 = ServiceInfo{"Service004", SERVER2, 10081, 22, 1};
			auto mt03 = ServiceInfo{"Service005", SERVER2, 10082, 23, 1};
			ctx->SetLocalService(mt01.Name, mt01);
			ctx->SetLocalService(mt02.Name, mt02);
			ctx->SetLocalService(mt03.Name, mt03);
		}

		if (currentIP == SERVER3) {
			auto mt01 = ServiceInfo{"HelloWorld", SERVER3, 10080, 31, 1};
			auto mt02 = ServiceInfo{"Service006", SERVER3, 10081, 31, 0};
			auto mt03 = ServiceInfo{"Service007", SERVER3, 10082, 31, 1};
			ctx->SetLocalService(mt01.Name, mt01);
			ctx->SetLocalService(mt02.Name, mt02);
			ctx->SetLocalService(mt03.Name, mt03);
		}
	}
} // namespace biz

#endif // __MOCK_H__
